﻿using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;

namespace WiMo.Games.Inputs
{
    public interface IInputManager
    {
        bool WasPressed(IInputManager inputManager, Keys key);
        bool IsPressed(IInputManager inputManager, Keys key, int debounceMs, bool fromAccelerometer);
        bool IsPressed(IInputManager inputManager, Keys key, int debounceMs);
        bool IsKeyDown(Keys key);
        bool IsKeyUp(Keys key);
        bool IsMouseUp { get; }
        bool SupportMultiTouch { get; }
        bool WasScreenTouched(IInputManager inputManager);
        bool WasScreenTouched(IInputManager inputManager, Rectangle rect);
        List<TouchPoint> TouchPoints { get; }
        IInputManager GetKeysState();
        ICharacterBuffer CharacterBuffer { get; }
        IDisplay DisplayManager { get; set; }
        Vector3 GVector { get; }
        bool SupportAccelerometer { get; }
        bool UseAccelerometerAsThumbPad { get; set; }
        Vector2 AccelerometerDPadThreshold { get; set; }
        void Update();
        string LeftSoftButton { get; set; }
        string RightSoftButton { get; set; }

        Color SoftMenuFontColor { get; set; }
        Color MenuBarBackgroundColor { get; set; }
        ISpriteFont SoftMenuFont { get; set; }

        void StartHopper();
        void StopHopper();

        void Draw(GameTime gameTime);
    }
}
